package com.hhf.function;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * @Author hhf
 * @Date 2024/6/13
 * @Description Function函数式的各种写法
 * 1.有入参,有出参[多功能函数] Function<T, R>   R apply(T t);
 * 2.有入参,无出参[消费者] Consumer<T>      void accept(T t);
 * 3.无入参,有出参[提供者] Supplier<T>      T get();
 *
 * java.util.function 包下的所有function定义(idea查找类快捷键: ctrl + n):
 * - Consumer: 消费者
 * - Supplier: 提供者
 * - Predicate: 断言(接受一个参数,返回boolean)
 */
public class FunctionDemo {

    public static void main(String[] args) {

        //1.有入参,有出参
        //实现字符串转整数
        Function<String,Integer> function = (str) ->{
            return Integer.parseInt(str);
        };
        //方法引用写法
//        Function<String,Integer> function = Integer::parseInt;
        System.out.println(function.apply("66"));


        //2.有入参,无出参
        Consumer<String> consumer = (str) -> {
            System.out.println(str + ",hello world");
        };
        consumer.accept("你好世界");


        //3.无入参,有出参
        Supplier<String> supplier = () -> {
            return "梅花香自苦寒来";
        };
        System.out.println(supplier.get());

        //4.断言
        //判断是否为偶数
        Predicate<Integer> predicate = (i) -> {
            return i%2==0;
        } ;
        System.out.println(predicate.test(68));

    }
}
